{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn import datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "iris = datasets.load_iris()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X = iris.data\n",
    "y = iris.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "150"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from playML.model_selection import my_train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = my_train_test_split(X, y, random_state=666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 5.1,  3.5,  1.4,  0.2],\n",
       "       [ 4.9,  3. ,  1.4,  0.2],\n",
       "       [ 5.7,  2.8,  4.1,  1.3],\n",
       "       [ 6.2,  3.4,  5.4,  2.3],\n",
       "       [ 5.1,  2.5,  3. ,  1.1],\n",
       "       [ 7. ,  3.2,  4.7,  1.4],\n",
       "       [ 6.1,  2.6,  5.6,  1.4],\n",
       "       [ 7.6,  3. ,  6.6,  2.1],\n",
       "       [ 5.2,  4.1,  1.5,  0.1],\n",
       "       [ 6.2,  2.2,  4.5,  1.5],\n",
       "       [ 7.3,  2.9,  6.3,  1.8],\n",
       "       [ 6.4,  3.2,  5.3,  2.3],\n",
       "       [ 6. ,  3.4,  4.5,  1.6],\n",
       "       [ 5.2,  2.7,  3.9,  1.4],\n",
       "       [ 5.4,  3.7,  1.5,  0.2],\n",
       "       [ 5.3,  3.7,  1.5,  0.2],\n",
       "       [ 5. ,  3.5,  1.6,  0.6],\n",
       "       [ 4.4,  2.9,  1.4,  0.2],\n",
       "       [ 5.8,  2.7,  3.9,  1.2],\n",
       "       [ 5.2,  3.4,  1.4,  0.2],\n",
       "       [ 4.6,  3.4,  1.4,  0.3],\n",
       "       [ 6.5,  3.2,  5.1,  2. ],\n",
       "       [ 5.7,  2.9,  4.2,  1.3],\n",
       "       [ 6.6,  3. ,  4.4,  1.4],\n",
       "       [ 6. ,  2.9,  4.5,  1.5],\n",
       "       [ 4.7,  3.2,  1.6,  0.2],\n",
       "       [ 4.9,  3.1,  1.5,  0.1],\n",
       "       [ 6.7,  3.1,  5.6,  2.4],\n",
       "       [ 6.3,  2.7,  4.9,  1.8],\n",
       "       [ 6.1,  2.8,  4.7,  1.2],\n",
       "       [ 6.2,  2.8,  4.8,  1.8],\n",
       "       [ 5.7,  4.4,  1.5,  0.4],\n",
       "       [ 6.3,  2.5,  4.9,  1.5],\n",
       "       [ 6.4,  2.9,  4.3,  1.3],\n",
       "       [ 5.1,  3.8,  1.9,  0.4],\n",
       "       [ 6.8,  2.8,  4.8,  1.4],\n",
       "       [ 5.1,  3.5,  1.4,  0.3],\n",
       "       [ 4.3,  3. ,  1.1,  0.1],\n",
       "       [ 5.9,  3. ,  5.1,  1.8],\n",
       "       [ 6.4,  2.8,  5.6,  2.1],\n",
       "       [ 5.6,  2.8,  4.9,  2. ],\n",
       "       [ 5.5,  2.4,  3.7,  1. ],\n",
       "       [ 6.9,  3.1,  4.9,  1.5],\n",
       "       [ 6.3,  3.4,  5.6,  2.4],\n",
       "       [ 6.5,  3. ,  5.8,  2.2],\n",
       "       [ 5.7,  3.8,  1.7,  0.3],\n",
       "       [ 6.6,  2.9,  4.6,  1.3],\n",
       "       [ 6.7,  3.3,  5.7,  2.5],\n",
       "       [ 4.8,  3. ,  1.4,  0.1],\n",
       "       [ 5. ,  3.6,  1.4,  0.2],\n",
       "       [ 6. ,  3. ,  4.8,  1.8],\n",
       "       [ 5. ,  3. ,  1.6,  0.2],\n",
       "       [ 6.1,  3. ,  4.9,  1.8],\n",
       "       [ 6.4,  3.1,  5.5,  1.8],\n",
       "       [ 5.1,  3.7,  1.5,  0.4],\n",
       "       [ 5.7,  3. ,  4.2,  1.2],\n",
       "       [ 5. ,  3.5,  1.3,  0.3],\n",
       "       [ 5.1,  3.8,  1.5,  0.3],\n",
       "       [ 4.6,  3.2,  1.4,  0.2],\n",
       "       [ 5.4,  3. ,  4.5,  1.5],\n",
       "       [ 6.5,  2.8,  4.6,  1.5],\n",
       "       [ 6.1,  2.8,  4. ,  1.3],\n",
       "       [ 4.8,  3.4,  1.6,  0.2],\n",
       "       [ 5.1,  3.3,  1.7,  0.5],\n",
       "       [ 5.8,  2.7,  5.1,  1.9],\n",
       "       [ 5.6,  3. ,  4.1,  1.3],\n",
       "       [ 6.3,  2.8,  5.1,  1.5],\n",
       "       [ 6.7,  3.3,  5.7,  2.1],\n",
       "       [ 7.2,  3. ,  5.8,  1.6],\n",
       "       [ 6.7,  3. ,  5.2,  2.3],\n",
       "       [ 4.9,  3.1,  1.5,  0.1],\n",
       "       [ 4.9,  2.5,  4.5,  1.7],\n",
       "       [ 5.7,  2.5,  5. ,  2. ],\n",
       "       [ 4.9,  2.4,  3.3,  1. ],\n",
       "       [ 5.5,  2.4,  3.8,  1.1],\n",
       "       [ 6.7,  2.5,  5.8,  1.8],\n",
       "       [ 6.5,  3. ,  5.5,  1.8],\n",
       "       [ 5.7,  2.6,  3.5,  1. ],\n",
       "       [ 6. ,  2.2,  5. ,  1.5],\n",
       "       [ 6.7,  3.1,  4.7,  1.5],\n",
       "       [ 4.9,  3.1,  1.5,  0.1],\n",
       "       [ 6.3,  2.5,  5. ,  1.9],\n",
       "       [ 4.7,  3.2,  1.3,  0.2],\n",
       "       [ 6. ,  2.7,  5.1,  1.6],\n",
       "       [ 5.8,  2.6,  4. ,  1.2],\n",
       "       [ 6.9,  3.2,  5.7,  2.3],\n",
       "       [ 4.4,  3. ,  1.3,  0.2],\n",
       "       [ 7.1,  3. ,  5.9,  2.1],\n",
       "       [ 6.8,  3.2,  5.9,  2.3],\n",
       "       [ 5.2,  3.5,  1.5,  0.2],\n",
       "       [ 7.9,  3.8,  6.4,  2. ],\n",
       "       [ 6.4,  2.8,  5.6,  2.2],\n",
       "       [ 5.6,  2.9,  3.6,  1.3],\n",
       "       [ 5.5,  4.2,  1.4,  0.2],\n",
       "       [ 4.8,  3. ,  1.4,  0.3],\n",
       "       [ 6.3,  2.9,  5.6,  1.8],\n",
       "       [ 4.4,  3.2,  1.3,  0.2],\n",
       "       [ 5.4,  3.9,  1.7,  0.4],\n",
       "       [ 5. ,  3.4,  1.6,  0.4],\n",
       "       [ 6.7,  3. ,  5. ,  1.7],\n",
       "       [ 5.4,  3.9,  1.3,  0.4],\n",
       "       [ 7.7,  2.8,  6.7,  2. ],\n",
       "       [ 5.6,  2.7,  4.2,  1.3],\n",
       "       [ 6.8,  3. ,  5.5,  2.1],\n",
       "       [ 5.5,  3.5,  1.3,  0.2],\n",
       "       [ 4.8,  3.4,  1.9,  0.2],\n",
       "       [ 5.4,  3.4,  1.7,  0.2],\n",
       "       [ 7.7,  3.8,  6.7,  2.2],\n",
       "       [ 6.9,  3.1,  5.4,  2.1],\n",
       "       [ 5.6,  2.5,  3.9,  1.1],\n",
       "       [ 5.1,  3.4,  1.5,  0.2],\n",
       "       [ 5.1,  3.8,  1.6,  0.2],\n",
       "       [ 6.1,  2.9,  4.7,  1.4],\n",
       "       [ 5.8,  4. ,  1.2,  0.2],\n",
       "       [ 5. ,  2. ,  3.5,  1. ],\n",
       "       [ 6.4,  3.2,  4.5,  1.5],\n",
       "       [ 6.1,  3. ,  4.6,  1.4],\n",
       "       [ 5.9,  3.2,  4.8,  1.8],\n",
       "       [ 6. ,  2.2,  4. ,  1. ],\n",
       "       [ 7.4,  2.8,  6.1,  1.9]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(120, 4)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from playML.preprocessing import MyStandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "myStandardScaler = MyStandardScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MyStandardScaler()"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myStandardScaler.fit(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5.83416667,  3.0825    ,  3.70916667,  1.16916667])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myStandardScaler.mean_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.81019502,  0.44076874,  1.76295187,  0.75429833])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myStandardScaler.scale_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.44875"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.9758749380548692"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.std(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = myStandardScaler.transform(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(120, 4)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.9211894646675015e-17"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.std(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
